Index
Index란
임의의 규칙대로 부여된 임의의 대상을 가리키는 것
Cluster
Clustered
정렬되어 있다.
그래서 중간에 insert를 하면 뒤의 값을 밀어줘야 한다.
Non-Clustered
정렬되어 있지 않다.
PK
순서대로 있고
unique하다.
범위 검색하기 좋다.
존재하는 PK 사이에 Insert할 수 없다.
문자열
순서 상관 없고
unique하지 않고
추가 저장 공간이 필요하다.
Insert시 추가 작업이 필요하다. (인덱스 생성한다.)
인덱스를 넣고 안넣는 것의 차이
0.5초, 5초걸리던 작업이 0.00, 0.01초가 걸리게 변한다.
Index Column
빠르게 데이터를 찾기 위해 정렬해둔 컬럼 사본
실제로는 트리의 형태를 가진다.
구조
각 노드에 여러 개를 넣을 수 있는데 성능이 올라간다. 이를 B-Tree라고 부른다.
이보다 성능을 좋게 만든 건 B+tree로 가이드 방식이다.
몇 이상은 오른쪽 몇 이하는 왼쪽이라는 방식이 트리로 되어있음
그리고 terminal끼리 연결되어있어 범위 검색이 가능하다.
동작 원리
인덱스를 통해 값을 찾고 값에 해당하는 Row값을 통해 데이터를 가져온다.
단점
용량이 늘어남
데이터가 늘어날 때마다 인덱스도 같이 수정해야해서 성능 하락이 있지만 걱정할만큼은 아니다.
PK
Primary key는 이미 정렬되어있어 index 생성 필요없다.